// f[k][i][j]表示至少有i份氧气，j份氮气所需要的质量的最小值
// f[k][i][j] = min(f[k - 1][i][j], f[k - 1][i - v][j - w] + value)
// 至少需要负数的空气和至少需要0的空气是等价的
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

const int N = 30, M = 80;
int n, m, k;
int f[N][M];

int main()
{
    cin >> n >> m >> k;
    // 由于要求最小值，要记得初始化
    memset(f, 0x3f, sizeof f);
    f[0][0] = 0;
    while (k--)
    {
        int n1, m1, w;
        cin >> n1 >> m1 >> w;
        for (int i = n; i >= 0; --i)
            for (int j = m; j >= 0; --j)
                f[i][j] = min(f[i][j], f[max(0, i - n1)][max(0, j - m1)] + w);
    }
    cout << f[n][m] << endl;
    return 0;
}